home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_pyr_wallblast.cog < prev    next >
Text File  |  1999-11-15  |  3KB  |  120 lines

  1. # Jones 3D Cog Script
  2. #
  3. # pyr_wallblast.cog
  4. #
  5. # IMP #1 generic dealie
  6. #
  7. # [DS] Stolen by RKD
  8. #
  9. # (C) 1999 LucasArts Entertainment Company LLC. All Rights Reserved
  10. #
  11. # ===================================================================
  12. symbols
  13. message    startup
  14. message    activated
  15. message    damaged
  16.  
  17. # blowuppable surface
  18. surface    crackedwall    mask=0x408
  19.  
  20. # things
  21. thing    bombpos        local
  22. thing    dust        local
  23. thing    player        local
  24.  
  25. # sounds and saylines
  26. sound    explosion=gen_bazooka_fire.wav    local
  27. sound    indysay=inxj025.wav                local #This wall looks ready to crumble.
  28.  
  29. # templates
  30. template    dusttemp=dustcloud            local        
  31. template    debris=stnshrapas_nc_ns        local
  32. template    bomb=ghost                    local
  33.  
  34. # materials
  35. material    dustmat=gen_a4sfx_dustcloud.mat    local
  36.  
  37. # variables
  38. int        fragment=0    local
  39. int        i=0            local
  40.  
  41. # subroutines
  42. flex    blowitup=0.0    local
  43.  
  44. end
  45. # -------------------------------------------------------------------
  46.  
  47. code
  48. startup:
  49.     Sleep(.01);
  50.  
  51.     # make wall visible, no move
  52.     ClearAdjoinFlags(crackedwall, 2);
  53.     SetFaceGeoMode(crackedwall, 4);
  54.     ClearAdjoinFlags(GetSurfaceAdjoin(crackedwall), 2);
  55.     SetFaceGeoMode(GetSurfaceAdjoin(crackedwall), 4);
  56.     
  57.     return;
  58.  
  59. damaged:
  60. # ---> crackedwall
  61.     
  62.     player = GetLocalPlayerThing();
  63.     
  64.     if (GetCurWeapon(player) != 14) return;                #if not holding MP1
  65.     if (GetParam(1) != 0x1000) return;                    #if damage wasn't caused by MP1
  66.     call blowitup;
  67.     return;
  68.  
  69. activated:
  70. # ---> crackedwall
  71.     
  72.     player = GetLocalPlayerThing();
  73.     if (GetCurWeapon(player) == 14) return;
  74.     
  75.     if ((GetSenderRef() == crackedwall) && (GetSourceRef() == player))
  76.     {
  77.         StopThing(player);
  78.         SetActorFlags(player, 0x200000);
  79.         PlayMode(player, 60, 0);
  80.         PlayVoice(player, indysay, 1.0, 1);
  81.         ClearActorFlags(player, 0x200000);
  82.         return;
  83.     }
  84.     return;
  85.     
  86. blowitup:
  87.     sleep(0.3);    
  88.     PlaySoundLocal(explosion, 1, 0, 0x0, 0);
  89.     
  90.     SetAdjoinFlags(crackedwall, 2);
  91.     SetAdjoinFlags(GetSurfaceAdjoin(crackedwall), 2);
  92.     
  93.     bombpos = CreateThingAtPos(bomb, GetSurfaceSector(crackedwall), GetSurfaceCenter(crackedwall), '0, 0, 0');
  94.     CaptureThing(bombpos);
  95.  
  96.     for(i=0; i<40; i=i+1)
  97.     {
  98.         fragment = CreateThing(debris, bombpos);
  99.         SetThingVel(fragment, VectorScale(VectorAdd(RandVec(), '-0.5 -0.1 0.0'), 2));
  100.         SetThingRotVel(fragment, VectorScale(VectorAdd(RandVec(), '0.0 0.0 0.0'), 900.0));        
  101.     }
  102.     
  103.     SetFaceGeoMode(crackedwall, 0);
  104.     SetFaceGeoMode(GetSurfaceAdjoin(crackedwall), 0);
  105.     
  106.     dust = CreateThing(dusttemp,bombpos);
  107.     MaterialAnim(dustmat, 8.0, 0);
  108.     AnimateSpriteSize(dust, '0.02 0.02 1.0', '0.4 0.4 0.5', 1.0);
  109.     
  110.     sleep(1.0);
  111.     
  112.     Destroything(dust);                                                                                       
  113.     return;
  114.  
  115. end
  116.  
  117.  
  118.  
  119.  
  120.